use sea_orm_migration::prelude::*;

/// 部门表
#[derive(Iden)]
pub enum Department {
    Table,

    /// 部门编号
    Id,

    /// 名字
    Name,

    /// 电话
    PhoneNumber,

    /// 传真
    FaxNumber,

    /// 描述
    Description,

    /// 成立日期
    EstablishDate,

    /// 类型：公司 | 部门
    Kind,

    /// 上级部门（弱引用）
    ParentId,
}

impl Department {
    pub fn table() -> TableCreateStatement {
        Table::create()
            .table(Self::Table)
            .if_not_exists()
            .col(
                ColumnDef::new(Self::Id)
                    .integer()
                    .primary_key()
                    .auto_increment(),
            )
            .col(ColumnDef::new(Self::Name).string().not_null().unique_key())
            .col(ColumnDef::new(Self::PhoneNumber).string().not_null())
            .col(ColumnDef::new(Self::FaxNumber).string())
            .col(ColumnDef::new(Self::Description).text())
            .col(ColumnDef::new(Self::EstablishDate).date().not_null())
            .col(ColumnDef::new(Self::Kind).char_len(2).not_null())
            .col(ColumnDef::new(Self::ParentId).integer())
            .to_owned()
    }

    pub fn with_parent() -> ForeignKeyCreateStatement {
        ForeignKey::create()
            .name("FK_department_parent")
            .from(Self::Table, Self::ParentId)
            .to(Self::Table, Self::Id)
            .to_owned()
    }

    pub fn drop() -> TableDropStatement {
        Table::drop().table(Self::Table).to_owned()
    }
}
